What Are Generative Adversarial Networks And How Do They Work